home *** CD-ROM | disk | FTP | other *** search
/ Acorn RISC PD-CD 1 / Acorn RISC PD-CD 1.iso / games / _kalaha / source / c / misc < prev    next >
Encoding:
Text File  |  1992-03-04  |  1.6 KB  |  110 lines

  1.  
  2. /* fiddly bits */
  3.  
  4. #include "kalaha.h"
  5.  
  6.  
  7. int which_layer(int p)
  8. int res;
  9.  
  10. res = OTHERLAY;
  11. if (p>=0 && p<6)
  12.   res = BOTLAY;
  13. if (p>=7 && p<13)
  14.   res = TOPLAY;
  15. if (p==6)
  16.   res = MIDRIGHT;
  17. if (p==13)
  18.   res = MIDLEFT;
  19. return res;
  20. }
  21.    
  22.  
  23.  
  24. void set_icon_select_state(wimp_w w, int i, BOOL on)
  25. {
  26. int v;
  27. if (on)
  28.   v = wimp_ISELECTED;
  29. else
  30.   v = 0;
  31. wimpt_noerr(wimp_set_icon_state(w, i, v, wimp_ISELECTED));
  32. }
  33.  
  34.  
  35.  
  36. void write_iconnum(int n, wimp_i i)
  37. {
  38. wimp_wind  *windp;
  39. wimp_icon  *iconp;
  40. char       *icontext;
  41.  
  42. windp = template_syshandle("main_window");
  43. if (windp == 0)
  44.   werr(TRUE, "Fatal internal error ( %d )", __LINE__);
  45. iconp = (wimp_icon  *)(windp+1);
  46. icontext = iconp[i].data.indirecttext.buffer;
  47. sprintf(icontext, "%d", n);
  48. }
  49.  
  50.  
  51.  
  52. void force_whole_wind_redraw(void)
  53. {
  54. wimp_redrawstr r;   
  55.  
  56. r.w = main_window_handle;
  57. r.box.x0 = 0;
  58. r.box.y0 = -WINDHT;
  59. r.box.x1 = 2*SIDEBORDER + 6*HOLLWID;
  60. r.box.y1 = 0;
  61. wimpt_noerr(wimp_force_redraw(&r));
  62. }
  63.  
  64.  
  65.  
  66. void find_hollow_box(wimp_box *b, int p)
  67. {
  68. switch (which_layer(p))
  69.   {
  70.   case BOTLAY:
  71.   b->x0 = SIDEBORDER+HOLLWID*p;
  72.   b->y0 = BOTROW;
  73.   b->x1 = SIDEBORDER+HOLLWID*(p+1);
  74.   b->y1 = BOTROW + 200;
  75.   break;
  76.  
  77.   case TOPLAY:
  78.   b->x0 = SIDEBORDER+HOLLWID*(12-p);
  79.   b->y0 = TOPROW;
  80.   b->x1 = SIDEBORDER+HOLLWID*(13-p);
  81.   b->y1 = TOPROW + 200;
  82.   break;
  83.  
  84.   case MIDLEFT:
  85.   b->y0 = MIDROW;
  86.   b->y1 = MIDROW + 200;
  87.   b->x0 = 0;
  88.   b->x1 = SIDEBORDER+HOLLWID*2;
  89.   break;
  90.  
  91.   case MIDRIGHT:
  92.   b->y0 = MIDROW;
  93.   b->y1 = MIDROW + 200;
  94.   b->x0 = SIDEBORDER+HOLLWID*4;
  95.   b->x1 = SIDEBORDER+HOLLWID*6;
  96.   break;
  97.  
  98.   case OTHERLAY:  
  99.   b->y0 = MIDROW;
  100.   b->y1 = MIDROW + 200;
  101.   b->x0 = SIDEBORDER+HOLLWID*2;
  102.   b->x1 = SIDEBORDER+HOLLWID*4;
  103.   break;
  104.   }
  105. return;
  106. }
  107.  
  108.  
  109.